Skip to content

Set GPUCompiler lower bound for adaptive GPU performance#473

Closed
ChrisRackauckas-Claude wants to merge 1 commit into
masterfrom
fix-gpucompiler-regression-434
Closed

Set GPUCompiler lower bound for adaptive GPU performance#473
ChrisRackauckas-Claude wants to merge 1 commit into
masterfrom
fix-gpucompiler-regression-434

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Fixes #434.

Summary

  • Add GPUCompiler as a weak dependency.
  • Set the GPUCompiler compat floor to 1.13.2.

Root cause

The adaptive Lorenz regression tracks to a GPUCompiler/NVPTX codegen cliff in GPUCompiler 1.13.1 and earlier. On the stock DiffEqGPU adaptive kernel body, GPUCompiler 1.13.1 produced the slow path at about 211.8 ms; GPUCompiler 1.13.2 restored the expected path at about 47.9 ms.

The minimal compiler-pipeline difference I isolated is the EarlyCSEPass() inserted after SROAPass() in GPUCompiler's early simplification pipeline. Rebuilding GPUCompiler 1.13.1 with only that pass restored the adaptive benchmark to about 47.8 ms, matching 1.13.2+ behavior.

This package-level fix avoids known-bad compiler versions without adding GPUCompiler as a hard dependency for non-GPU installs.

Validation

  • git diff origin/master --stat
    • Project.toml | 2 ++
  • git diff --check
    • passed
  • JULIA_DEPOT_PATH=$PWD/dev/julia_depot: julia --project=test -e 'using Pkg; Pkg.resolve(); Pkg.status(["CUDA", "GPUCompiler"]; mode = Pkg.PKGMODE_MANIFEST)'
    • CUDA v6.2.0
    • GPUCompiler v1.22.7
  • JULIA_DEPOT_PATH=$PWD/dev/julia_depot: GROUP=QA julia --project=test test/runtests.jl
    • attempted locally, but the existing QA harness fails before running QA because SafeTestsets is unavailable after activating test/qa

Notes

The GPU benchmark investigation was performed on demeter2 with the issue reproducer. Other candidates checked and ruled out included extra rejected steps, saving/output, tstops, DAE init/finalization, workgroup size, Julia version, fixed-step Tsit5, raw SVector Lorenz loops, and the stock DiffEqGPU step! body itself.

@ChrisRackauckas ChrisRackauckas force-pushed the fix-gpucompiler-regression-434 branch from 3e95506 to a9a39f5 Compare July 9, 2026 06:50
@ChrisRackauckas-Claude ChrisRackauckas-Claude changed the title Guard against slow GPUCompiler versions Set GPUCompiler lower bound for adaptive GPU performance Jul 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adaptive lorenz 5x benchmark regression

2 participants